package com.pawernode.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 消息服务类，负责发送消息到RabbitMQ
 */
@Service
@Slf4j
public class MessageService {
    // 注入RabbitTemplate用于发送消息
    @Resource
    private RabbitTemplate rabbitTemplate;
    // 从配置文件中获取交换机名称
    @Value("${my.exchangeName}")
    private String exchangeName;

    /**
     * 发送消息到RabbitMQ的交换机
     */
    public void sendMsg() {
        // 消息属性
        MessageProperties messageProperties = new MessageProperties();
        // 自定义消息头
        Map<String, Object> headers = new HashMap<>();
        headers.put("type", "s");
        headers.put("status", "0");
        // 设置消息头
        messageProperties.setHeaders(headers);
        // 构建消息属性
        Message message = MessageBuilder.withBody("hello rabbitmq".getBytes()).andProperties(messageProperties).build();
        // 使用RabbitTemplate发送消息
        rabbitTemplate.convertAndSend(exchangeName,"",message);
        // 日志记录消息发送时间
        log.info("消息发送完毕，发送时间为：{}",new Date());
    }
}
